/*
 Navicat Premium Data Transfer

 Source Server         : personal_blog
 Source Server Type    : MySQL
 Source Server Version : 80012
 Source Host           : localhost:3306
 Source Schema         : personal_blog

 Target Server Type    : MySQL
 Target Server Version : 80012
 File Encoding         : 65001

 Date: 23/12/2019 20:23:31
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for auth_group
-- ----------------------------
DROP TABLE IF EXISTS `auth_group`;
CREATE TABLE `auth_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(80) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for auth_group_permissions
-- ----------------------------
DROP TABLE IF EXISTS `auth_group_permissions`;
CREATE TABLE `auth_group_permissions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `group_id` int(11) NOT NULL,
  `permission_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `auth_group_permissions_group_id_permission_id_0cd325b0_uniq` (`group_id`,`permission_id`),
  KEY `auth_group_permissio_permission_id_84c5c92e_fk_auth_perm` (`permission_id`),
  CONSTRAINT `auth_group_permissio_permission_id_84c5c92e_fk_auth_perm` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`),
  CONSTRAINT `auth_group_permissions_group_id_b120cbf9_fk_auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for auth_permission
-- ----------------------------
DROP TABLE IF EXISTS `auth_permission`;
CREATE TABLE `auth_permission` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `content_type_id` int(11) NOT NULL,
  `codename` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `auth_permission_content_type_id_codename_01ab375a_uniq` (`content_type_id`,`codename`),
  CONSTRAINT `auth_permission_content_type_id_2f476e4b_fk_django_co` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of auth_permission
-- ----------------------------
BEGIN;
INSERT INTO `auth_permission` VALUES (1, 'Can add log entry', 1, 'add_logentry');
INSERT INTO `auth_permission` VALUES (2, 'Can change log entry', 1, 'change_logentry');
INSERT INTO `auth_permission` VALUES (3, 'Can delete log entry', 1, 'delete_logentry');
INSERT INTO `auth_permission` VALUES (4, 'Can add permission', 2, 'add_permission');
INSERT INTO `auth_permission` VALUES (5, 'Can change permission', 2, 'change_permission');
INSERT INTO `auth_permission` VALUES (6, 'Can delete permission', 2, 'delete_permission');
INSERT INTO `auth_permission` VALUES (7, 'Can add group', 3, 'add_group');
INSERT INTO `auth_permission` VALUES (8, 'Can change group', 3, 'change_group');
INSERT INTO `auth_permission` VALUES (9, 'Can delete group', 3, 'delete_group');
INSERT INTO `auth_permission` VALUES (10, 'Can add user', 4, 'add_user');
INSERT INTO `auth_permission` VALUES (11, 'Can change user', 4, 'change_user');
INSERT INTO `auth_permission` VALUES (12, 'Can delete user', 4, 'delete_user');
INSERT INTO `auth_permission` VALUES (13, 'Can add content type', 5, 'add_contenttype');
INSERT INTO `auth_permission` VALUES (14, 'Can change content type', 5, 'change_contenttype');
INSERT INTO `auth_permission` VALUES (15, 'Can delete content type', 5, 'delete_contenttype');
INSERT INTO `auth_permission` VALUES (16, 'Can add session', 6, 'add_session');
INSERT INTO `auth_permission` VALUES (17, 'Can change session', 6, 'change_session');
INSERT INTO `auth_permission` VALUES (18, 'Can delete session', 6, 'delete_session');
INSERT INTO `auth_permission` VALUES (19, 'Can add 每日一句', 7, 'add_everydaysentence');
INSERT INTO `auth_permission` VALUES (20, 'Can change 每日一句', 7, 'change_everydaysentence');
INSERT INTO `auth_permission` VALUES (21, 'Can delete 每日一句', 7, 'delete_everydaysentence');
INSERT INTO `auth_permission` VALUES (22, 'Can add 每日推荐', 8, 'add_today');
INSERT INTO `auth_permission` VALUES (23, 'Can change 每日推荐', 8, 'change_today');
INSERT INTO `auth_permission` VALUES (24, 'Can delete 每日推荐', 8, 'delete_today');
INSERT INTO `auth_permission` VALUES (25, 'Can add 通告', 9, 'add_notification');
INSERT INTO `auth_permission` VALUES (26, 'Can change 通告', 9, 'change_notification');
INSERT INTO `auth_permission` VALUES (27, 'Can delete 通告', 9, 'delete_notification');
INSERT INTO `auth_permission` VALUES (28, 'Can add 文章详情', 10, 'add_article');
INSERT INTO `auth_permission` VALUES (29, 'Can change 文章详情', 10, 'change_article');
INSERT INTO `auth_permission` VALUES (30, 'Can delete 文章详情', 10, 'delete_article');
INSERT INTO `auth_permission` VALUES (31, 'Can add 文章一级分类', 11, 'add_category');
INSERT INTO `auth_permission` VALUES (32, 'Can change 文章一级分类', 11, 'change_category');
INSERT INTO `auth_permission` VALUES (33, 'Can delete 文章一级分类', 11, 'delete_category');
INSERT INTO `auth_permission` VALUES (34, 'Can add 文章标签', 12, 'add_tags');
INSERT INTO `auth_permission` VALUES (35, 'Can change 文章标签', 12, 'change_tags');
INSERT INTO `auth_permission` VALUES (36, 'Can delete 文章标签', 12, 'delete_tags');
INSERT INTO `auth_permission` VALUES (37, 'Can add 用户', 13, 'add_users');
INSERT INTO `auth_permission` VALUES (38, 'Can change 用户', 13, 'change_users');
INSERT INTO `auth_permission` VALUES (39, 'Can delete 用户', 13, 'delete_users');
INSERT INTO `auth_permission` VALUES (40, 'Can add 文章评论', 14, 'add_comments');
INSERT INTO `auth_permission` VALUES (41, 'Can change 文章评论', 14, 'change_comments');
INSERT INTO `auth_permission` VALUES (42, 'Can delete 文章评论', 14, 'delete_comments');
INSERT INTO `auth_permission` VALUES (43, 'Can add IP_ADDRESS', 15, 'add_ip');
INSERT INTO `auth_permission` VALUES (44, 'Can change IP_ADDRESS', 15, 'change_ip');
INSERT INTO `auth_permission` VALUES (45, 'Can delete IP_ADDRESS', 15, 'delete_ip');
INSERT INTO `auth_permission` VALUES (46, 'Can add IP_ADDRESS', 15, 'add_ipaddr');
INSERT INTO `auth_permission` VALUES (47, 'Can change IP_ADDRESS', 15, 'change_ipaddr');
INSERT INTO `auth_permission` VALUES (48, 'Can delete IP_ADDRESS', 15, 'delete_ipaddr');
INSERT INTO `auth_permission` VALUES (49, 'Can add 友情链接', 16, 'add_links');
INSERT INTO `auth_permission` VALUES (50, 'Can change 友情链接', 16, 'change_links');
INSERT INTO `auth_permission` VALUES (51, 'Can delete 友情链接', 16, 'delete_links');
COMMIT;

-- ----------------------------
-- Table structure for auth_user
-- ----------------------------
DROP TABLE IF EXISTS `auth_user`;
CREATE TABLE `auth_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `password` varchar(128) NOT NULL,
  `last_login` datetime(6) DEFAULT NULL,
  `is_superuser` tinyint(1) NOT NULL,
  `username` varchar(150) NOT NULL,
  `first_name` varchar(30) NOT NULL,
  `last_name` varchar(30) NOT NULL,
  `email` varchar(254) NOT NULL,
  `is_staff` tinyint(1) NOT NULL,
  `is_active` tinyint(1) NOT NULL,
  `date_joined` datetime(6) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of auth_user
-- ----------------------------
BEGIN;
INSERT INTO `auth_user` VALUES (1, 'pbkdf2_sha256$36000$ll235iq2ruv6$9w3XeMXZkvypZ4ijUOe2Ew4Wzu/R4ttsSXeR6i0JfZI=', NULL, 1, 'liangdingguan', '', '', '2280426623@qq.com', 1, 1, '2019-12-11 15:07:14.002934');
INSERT INTO `auth_user` VALUES (2, 'pbkdf2_sha256$36000$bGSPQVD7syYP$RYQaHghtPE/om0hh6LsVuQp1upRJevdC5xkljq5UhIY=', '2019-12-13 02:49:50.752902', 1, 'liang12345', '', '', '2280426623@qq.com', 1, 1, '2019-12-13 02:42:44.655390');
COMMIT;

-- ----------------------------
-- Table structure for auth_user_groups
-- ----------------------------
DROP TABLE IF EXISTS `auth_user_groups`;
CREATE TABLE `auth_user_groups` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `group_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `auth_user_groups_user_id_group_id_94350c0c_uniq` (`user_id`,`group_id`),
  KEY `auth_user_groups_group_id_97559544_fk_auth_group_id` (`group_id`),
  CONSTRAINT `auth_user_groups_group_id_97559544_fk_auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`),
  CONSTRAINT `auth_user_groups_user_id_6a12ed8b_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for auth_user_user_permissions
-- ----------------------------
DROP TABLE IF EXISTS `auth_user_user_permissions`;
CREATE TABLE `auth_user_user_permissions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `permission_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `auth_user_user_permissions_user_id_permission_id_14a6b632_uniq` (`user_id`,`permission_id`),
  KEY `auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm` (`permission_id`),
  CONSTRAINT `auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`),
  CONSTRAINT `auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for django_admin_log
-- ----------------------------
DROP TABLE IF EXISTS `django_admin_log`;
CREATE TABLE `django_admin_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `action_time` datetime(6) NOT NULL,
  `object_id` longtext,
  `object_repr` varchar(200) NOT NULL,
  `action_flag` smallint(5) unsigned NOT NULL,
  `change_message` longtext NOT NULL,
  `content_type_id` int(11) DEFAULT NULL,
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `django_admin_log_content_type_id_c4bce8eb_fk_django_co` (`content_type_id`),
  KEY `django_admin_log_user_id_c564eba6_fk` (`user_id`),
  CONSTRAINT `django_admin_log_content_type_id_c4bce8eb_fk_django_co` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`),
  CONSTRAINT `django_admin_log_user_id_c564eba6_fk` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of django_admin_log
-- ----------------------------
BEGIN;
INSERT INTO `django_admin_log` VALUES (1, '2019-12-17 06:29:59.059457', '3', '文章c语言入门这一篇就够了-学习笔记(一万字)', 2, '[{\"changed\": {\"fields\": [\"article_use\"]}}]', 10, 24);
COMMIT;

-- ----------------------------
-- Table structure for django_content_type
-- ----------------------------
DROP TABLE IF EXISTS `django_content_type`;
CREATE TABLE `django_content_type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app_label` varchar(100) NOT NULL,
  `model` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `django_content_type_app_label_model_76bd3d3b_uniq` (`app_label`,`model`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of django_content_type
-- ----------------------------
BEGIN;
INSERT INTO `django_content_type` VALUES (1, 'admin', 'logentry');
INSERT INTO `django_content_type` VALUES (3, 'auth', 'group');
INSERT INTO `django_content_type` VALUES (2, 'auth', 'permission');
INSERT INTO `django_content_type` VALUES (4, 'auth', 'user');
INSERT INTO `django_content_type` VALUES (10, 'category', 'article');
INSERT INTO `django_content_type` VALUES (11, 'category', 'category');
INSERT INTO `django_content_type` VALUES (15, 'category', 'ipaddr');
INSERT INTO `django_content_type` VALUES (12, 'category', 'tags');
INSERT INTO `django_content_type` VALUES (14, 'comments', 'comments');
INSERT INTO `django_content_type` VALUES (5, 'contenttypes', 'contenttype');
INSERT INTO `django_content_type` VALUES (7, 'index', 'everydaysentence');
INSERT INTO `django_content_type` VALUES (9, 'index', 'notification');
INSERT INTO `django_content_type` VALUES (8, 'index', 'today');
INSERT INTO `django_content_type` VALUES (16, 'links', 'links');
INSERT INTO `django_content_type` VALUES (6, 'sessions', 'session');
INSERT INTO `django_content_type` VALUES (13, 'users', 'users');
COMMIT;

-- ----------------------------
-- Table structure for django_migrations
-- ----------------------------
DROP TABLE IF EXISTS `django_migrations`;
CREATE TABLE `django_migrations` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  `applied` datetime(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of django_migrations
-- ----------------------------
BEGIN;
INSERT INTO `django_migrations` VALUES (1, 'contenttypes', '0001_initial', '2019-12-11 14:20:37.102351');
INSERT INTO `django_migrations` VALUES (2, 'auth', '0001_initial', '2019-12-11 14:20:37.307435');
INSERT INTO `django_migrations` VALUES (3, 'admin', '0001_initial', '2019-12-11 14:20:37.369818');
INSERT INTO `django_migrations` VALUES (4, 'admin', '0002_logentry_remove_auto_add', '2019-12-11 14:20:37.388119');
INSERT INTO `django_migrations` VALUES (5, 'contenttypes', '0002_remove_content_type_name', '2019-12-11 14:20:37.448432');
INSERT INTO `django_migrations` VALUES (6, 'auth', '0002_alter_permission_name_max_length', '2019-12-11 14:20:37.471367');
INSERT INTO `django_migrations` VALUES (7, 'auth', '0003_alter_user_email_max_length', '2019-12-11 14:20:37.500807');
INSERT INTO `django_migrations` VALUES (8, 'auth', '0004_alter_user_username_opts', '2019-12-11 14:20:37.510297');
INSERT INTO `django_migrations` VALUES (9, 'auth', '0005_alter_user_last_login_null', '2019-12-11 14:20:37.536684');
INSERT INTO `django_migrations` VALUES (10, 'auth', '0006_require_contenttypes_0002', '2019-12-11 14:20:37.539136');
INSERT INTO `django_migrations` VALUES (11, 'auth', '0007_alter_validators_add_error_messages', '2019-12-11 14:20:37.547346');
INSERT INTO `django_migrations` VALUES (12, 'auth', '0008_alter_user_username_max_length', '2019-12-11 14:20:37.627655');
INSERT INTO `django_migrations` VALUES (13, 'index', '0001_initial', '2019-12-11 14:20:37.644260');
INSERT INTO `django_migrations` VALUES (14, 'sessions', '0001_initial', '2019-12-11 14:20:37.659341');
INSERT INTO `django_migrations` VALUES (15, 'index', '0002_auto_20191212_0937', '2019-12-12 01:37:21.983799');
INSERT INTO `django_migrations` VALUES (16, 'index', '0003_everydaysentence_content2', '2019-12-12 01:40:09.316048');
INSERT INTO `django_migrations` VALUES (17, 'index', '0004_notification', '2019-12-12 03:57:09.955726');
INSERT INTO `django_migrations` VALUES (18, 'index', '0005_auto_20191212_1435', '2019-12-12 06:35:57.188193');
INSERT INTO `django_migrations` VALUES (19, 'index', '0006_auto_20191212_2254', '2019-12-12 14:54:37.535875');
INSERT INTO `django_migrations` VALUES (20, 'index', '0007_auto_20191212_2300', '2019-12-12 15:00:39.842637');
INSERT INTO `django_migrations` VALUES (21, 'category', '0001_initial', '2019-12-13 03:38:20.736101');
INSERT INTO `django_migrations` VALUES (22, 'users', '0001_initial', '2019-12-15 08:32:34.365018');
INSERT INTO `django_migrations` VALUES (23, 'category', '0002_article_article_use', '2019-12-16 12:42:03.449706');
INSERT INTO `django_migrations` VALUES (24, 'comments', '0001_initial', '2019-12-16 12:42:03.514011');
INSERT INTO `django_migrations` VALUES (25, 'comments', '0002_comments_date', '2019-12-18 16:54:20.524379');
INSERT INTO `django_migrations` VALUES (26, 'category', '0003_ip', '2019-12-18 18:44:00.699419');
INSERT INTO `django_migrations` VALUES (27, 'category', '0004_auto_20191219_0245', '2019-12-18 18:45:16.066310');
INSERT INTO `django_migrations` VALUES (28, 'links', '0001_initial', '2019-12-20 07:12:26.948837');
INSERT INTO `django_migrations` VALUES (29, 'category', '0005_ipaddr_ip_article', '2019-12-21 16:30:14.612159');
INSERT INTO `django_migrations` VALUES (30, 'category', '0006_ipaddr_time', '2019-12-22 09:04:44.280764');
COMMIT;

-- ----------------------------
-- Table structure for django_session
-- ----------------------------
DROP TABLE IF EXISTS `django_session`;
CREATE TABLE `django_session` (
  `session_key` varchar(40) NOT NULL,
  `session_data` longtext NOT NULL,
  `expire_date` datetime(6) NOT NULL,
  PRIMARY KEY (`session_key`),
  KEY `django_session_expire_date_a5c62663` (`expire_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for tb_Article
-- ----------------------------
DROP TABLE IF EXISTS `tb_Article`;
CREATE TABLE `tb_Article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) NOT NULL,
  `content` longtext NOT NULL,
  `views` int(10) unsigned NOT NULL,
  `date` date NOT NULL,
  `category_id` int(11) NOT NULL,
  `tag_id` int(11) NOT NULL,
  `article_use_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `tb_Article_category_id_97edb4e8_fk_tb_Category_id` (`category_id`),
  KEY `tb_Article_tag_id_93463ba5_fk_tb_Tags_id` (`tag_id`),
  KEY `tb_Article_article_use_id_e7d59c5b_fk_tb_users_id` (`article_use_id`),
  CONSTRAINT `tb_Article_article_use_id_e7d59c5b_fk_tb_users_id` FOREIGN KEY (`article_use_id`) REFERENCES `tb_users` (`id`),
  CONSTRAINT `tb_Article_category_id_97edb4e8_fk_tb_Category_id` FOREIGN KEY (`category_id`) REFERENCES `tb_category` (`id`),
  CONSTRAINT `tb_Article_tag_id_93463ba5_fk_tb_Tags_id` FOREIGN KEY (`tag_id`) REFERENCES `tb_tags` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_Article
-- ----------------------------
BEGIN;
INSERT INTO `tb_Article` VALUES (1, ' php如何判断一个日期的格式是否正确', '可以用strtotime()把日期（$date）转成时间戳，再用date()按需要验证的格式转成一个日期，来跟$date比较是否相同来验证这个日期的格式是否是正确的。所以要验证日期格式 ...', 133, '2019-12-13', 2, 1, 7);
INSERT INTO `tb_Article` VALUES (2, 'Django-外键', '什么是外键？\n外键是数据表用来指向某个外来的键值的字段。', 6, '2019-12-13', 2, 2, 8);
INSERT INTO `tb_Article` VALUES (3, 'c语言入门这一篇就够了-学习笔记(一万字)', 'https://blog.csdn.net/qq_23079443/article/details/81108901', 51, '2019-12-15', 2, 4, 22);
INSERT INTO `tb_Article` VALUES (4, '汇编语言入门教程', '学习编程其实就是学高级语言，即那些为人类设计的计算机语言。\r\n\r\n但是，计算机不理解高级语言，必须通过编译器转成二进制代码，才能运行。学会高级语言，并不等于理解计算机实际的运行步骤。\r\n\r\n\r\n计算机真正能够理解的是低级语言，它专门用来控制硬件。汇编语言就是低级语言，直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么，以及代码的运行步骤，就一定要学习汇编语言。\r\n\r\n汇编语言不容易学习，就连简明扼要的介绍都很难找到。下面我尝试写一篇最好懂的汇编语言教程，解释 CPU 如何执行代码。\r\n\r\n\r\n一、汇编语言是什么？\r\n\r\n我们知道，CPU 只负责计算，本身不具备智能。你输入一条指令（instruction），它就运行一次，然后停下来，等待下一条指令。\r\n\r\n这些指令都是二进制的，称为操作码（opcode），比如加法指令就是00000011。编译器的作用，就是将高级语言写好的程序，翻译成一条条操作码。\r\n\r\n对于人类来说，二进制程序是不可读的，根本看不出来机器干了什么。为了解决可读性的问题，以及偶尔的编辑需求，就诞生了汇编语言。\r\n\r\n\r\n汇编语言是二进制指令的文本形式，与指令是一一对应的关系。比如，加法指令00000011写成汇编语言就是 ADD。只要还原成二进制，汇编语言就可以被 CPU 直接执行，所以它是最底层的低级语言。\r\n\r\n二、来历\r\n\r\n最早的时候，编写程序就是手写二进制指令，然后通过各种开关输入计算机，比如要做加法了，就按一下加法开关。后来，发明了纸带打孔机，通过在纸带上打孔，将二进制指令自动输入计算机。\r\n\r\n为了解决二进制指令的可读性问题，工程师将那些指令写成了八进制。二进制转八进制是轻而易举的，但是八进制的可读性也不行。很自然地，最后还是用文字表达，加法指令写成 ADD。内存地址也不再直接引用，而是用标签表示。\r\n\r\n这样的话，就多出一个步骤，要把这些文字指令翻译成二进制，这个步骤就称为 assembling，完成这个步骤的程序就叫做 assembler。它处理的文本，自然就叫做 aseembly code。标准化以后，称为 assembly language，缩写为 asm，中文译为汇编语言。\r\n\r\n\r\n每一种 CPU 的机器指令都是不一样的，因此对应的汇编语言也不一样。本文介绍的是目前最常见的 x86 汇编语言，即 Intel 公司的 CPU 使用的那一种。\r\n\r\n三、寄存器\r\n\r\n学习汇编语言，首先必须了解两个知识点：寄存器和内存模型。\r\n\r\n先来看寄存器。CPU 本身只负责运算，不负责储存数据。数据一般都储存在内存之中，CPU 要用的时候就去内存读写数据。但是，CPU 的运算速度远高于内存的读写速度，为了避免被拖慢，CPU 都自带一级缓存和二级缓存。基本上，CPU 缓存可以看作是读写速度较快的内存。\r\n\r\n但是，CPU 缓存还是不够快，另外数据在缓存里面的地址是不固定的，CPU 每次读写都要寻址也会拖慢速度。因此，除了缓存之外，CPU 还自带了寄存器（register），用来储存最常用的数据。也就是说，那些最频繁读写的数据（比如循环变量），都会放在寄存器里面，CPU 优先读写寄存器，再由寄存器跟内存交换数据。\r\n\r\n\r\n寄存器不依靠地址区分数据，而依靠名称。每一个寄存器都有自己的名称，我们告诉 CPU 去具体的哪一个寄存器拿数据，这样的速度是最快的。有人比喻寄存器是 CPU 的零级缓存。\r\n\r\n四、寄存器的种类\r\n\r\n早期的 x86 CPU 只有8个寄存器，而且每个都有不同的用途。现在的寄存器已经有100多个了，都变成通用寄存器，不特别指定用途了，但是早期寄存器的名字都被保存了下来。\r\n\r\nEAX\r\n\r\nEBX\r\n\r\nECX\r\n\r\nEDX\r\n\r\nEDI\r\n\r\nESI\r\n\r\nEBP\r\n\r\nESP\r\n\r\n上面这8个寄存器之中，前面七个都是通用的。ESP 寄存器有特定用途，保存当前 Stack 的地址（详见下一节）。\r\n\r\n\r\n我们常常看到 32位 CPU、64位 CPU 这样的名称，其实指的就是寄存器的大小。32 位 CPU 的寄存器大小就是4个字节。\r\n\r\n五、内存模型：Heap\r\n\r\n寄存器只能存放很少量的数据，大多数时候，CPU 要指挥寄存器，直接跟内存交换数据。所以，除了寄存器，还必须了解内存怎么储存数据。\r\n\r\n程序运行的时候，操作系统会给它分配一段内存，用来储存程序和运行产生的数据。这段内存有起始地址和结束地址，比如从0x1000到0x8000，起始地址是较小的那个地址，结束地址是较大的那个地址。\r\n\r\n\r\n程序运行过程中，对于动态的内存占用请求（比如新建对象，或者使用malloc命令），系统就会从预先分配好的那段内存之中，划出一部分给用户，具体规则是从起始地址开始划分（实际上，起始地址会有一段静态数据，这里忽略）。举例来说，用户要求得到10个字节内存，那么从起始地址0x1000开始给他分配，一直分配到地址0x100A，如果再要求得到22个字节，那么就分配到0x1020。\r\n\r\n\r\n这种因为用户主动请求而划分出来的内存区域，叫做 Heap（堆）。它由起始地址开始，从低位（地址）向高位（地址）增长。Heap 的一个重要特点就是不会自动消失，必须手动释放，或者由垃圾回收机制来回收。\r\n\r\n六、内存模型：Stack\r\n\r\n除了 Heap 以外，其他的内存占用叫做 Stack（栈）。简单说，Stack 是由于函数运行而临时占用的内存区域。\r\n\r\n\r\n请看下面的例子。\r\n\r\nintmain(){int a=2;int b=3;}\r\n\r\n上面代码中，系统开始执行main函数时，会为它在内存里面建立一个帧（frame），所有main的内部变量（比如a和b）都保存在这个帧里面。main函数执行结束后，该帧就会被回收，释放所有的内部变量，不再占用空间。\r\n\r\n\r\n如果函数内部调用了其他函数，会发生什么情况？\r\n\r\nintmain(){int a=2;int b=3;returnadd_a_and_b(a,b);}\r\n\r\n上面代码中，main函数内部调用了add_a_and_b函数。执行到这一行的时候，系统也会为add_a_and_b新建一个帧，用来储存它的内部变量。也就是说，此时同时存在两个帧：main和add_a_and_b。一般来说，调用栈有多少层，就有多少帧。\r\n\r\n\r\n等到add_a_and_b运行结束，它的帧就会被回收，系统会回到函数main刚才中断执行的地方，继续往下执行。通过这种机制，就实现了函数的层层调用，并且每一层都能使用自己的本地变量。\r\n\r\n所有的帧都存放在 Stack，由于帧是一层层叠加的，所以 Stack 叫做栈。生成新的帧，叫做\"入栈\"，英文是 push；栈的回收叫做\"出栈\"，英文是 pop。Stack 的特点就是，最晚入栈的帧最早出栈（因为最内层的函数调用，最先结束运行），这就叫做\"后进先出\"的数据结构。每一次函数执行结束，就自动释放一个帧，所有函数执行结束，整个 Stack 就都释放了。\r\n\r\n\r\n\r\nStack 是由内存区域的结束地址开始，从高位（地址）向低位（地址）分配。比如，内存区域的结束地址是0x8000，第一帧假定是16字节，那么下一次分配的地址就会从0x7FF0开始；第二帧假定需要64字节，那么地址就会移动到0x7FB0。\r\n\r\n\r\n七、CPU 指令\r\n\r\n7.1 一个实例\r\n\r\n了解寄存器和内存模型以后，就可以来看汇编语言到底是什么了。下面是一个简单的程序example.c。\r\n\r\nintadd_a_and_b(int a,int b){returna+b;}intmain(){returnadd_a_and_b(2,3);}\r\n\r\ngcc 将这个程序转成汇编语言。\r\n\r\n$ gcc-S example.c\r\n\r\n上面的命令执行以后，会生成一个文本文件example.s，里面就是汇编语言，包含了几十行指令。这么说吧，一个高级语言的简单操作，底层可能由几个，甚至几十个 CPU 指令构成。CPU 依次执行这些指令，完成这一步操作。\r\n\r\nexample.s经过简化以后，大概是下面的样子。\r\n\r\n_add_a_and_b:push%ebx mov%eax,[%esp+8]mov%ebx,[%esp+12]add%eax,%ebx pop%ebx ret _main:push3push2call _add_a_and_b add%esp,8ret\r\n\r\n可以看到，原程序的两个函数add_a_and_b和main，对应两个标签_add_a_and_b和_main。每个标签里面是该函数所转成的 CPU 运行流程。\r\n\r\n每一行就是 CPU 执行的一次操作。它又分成两部分，就以其中一行为例。\r\n\r\npush%ebx\r\n\r\n这一行里面，push是 CPU 指令，%ebx是该指令要用到的运算子。一个 CPU 指令可以有零个到多个运算子。\r\n\r\n下面我就一行一行讲解这个汇编程序，建议读者最好把这个程序，在另一个窗口拷贝一份，省得阅读的时候再把页面滚动上来。\r\n\r\n7.2 push 指令\r\n\r\n根据约定，程序从_main标签开始执行，这时会在 Stack 上为main建立一个帧，并将 Stack 所指向的地址，写入 ESP 寄存器。后面如果有数据要写入main这个帧，就会写在 ESP 寄存器所保存的地址。\r\n\r\n然后，开始执行第一行代码。\r\n\r\npush3\r\n\r\npush指令用于将运算子放入 Stack，这里就是将3写入main这个帧。\r\n\r\n虽然看上去很简单，push指令其实有一个前置操作。它会先取出 ESP 寄存器里面的地址，将其减去4个字节，然后将新地址写入 ESP 寄存器。使用减法是因为 Stack 从高位向低位发展，4个字节则是因为3的类型是int，占用4个字节。得到新地址以后， 3 就会写入这个地址开始的四个字节。\r\n\r\npush2\r\n\r\n第二行也是一样，push指令将2写入main这个帧，位置紧贴着前面写入的3。这时，ESP 寄存器会再减去 4个字节（累计减去8）。\r\n\r\n\r\n7.3 call 指令\r\n\r\n第三行的call指令用来调用函数。\r\n\r\ncall _add_a_and_b\r\n\r\n上面的代码表示调用add_a_and_b函数。这时，程序就会去找_add_a_and_b标签，并为该函数建立一个新的帧。\r\n\r\n下面就开始执行_add_a_and_b的代码。\r\n\r\npush%ebx\r\n\r\n这一行表示将 EBX 寄存器里面的值，写入_add_a_and_b这个帧。这是因为后面要用到这个寄存器，就先把里面的值取出来，用完后再写回去。\r\n\r\n这时，push指令会再将 ESP 寄存器里面的地址减去4个字节（累计减去12）。\r\n\r\n7.4 mov 指令\r\n\r\nmov指令用于将一个值写入某个寄存器。\r\n\r\nmov%eax,[%esp+8]\r\n\r\n这一行代码表示，先将 ESP 寄存器里面的地址加上8个字节，得到一个新的地址，然后按照这个地址在 Stack 取出数据。根据前面的步骤，可以推算出这里取出的是2，再将2写入 EAX 寄存器。\r\n\r\n下一行代码也是干同样的事情。\r\n\r\nmov%ebx,[%esp+12]\r\n\r\n上面的代码将 ESP 寄存器的值加12个字节，再按照这个地址在 Stack 取出数据，这次取出的是3，将其写入 EBX 寄存器。\r\n\r\n7.5 add 指令\r\n\r\nadd指令用于将两个运算子相加，并将结果写入第一个运算子。\r\n\r\nadd%eax,%ebx\r\n\r\n上面的代码将 EAX 寄存器的值（即2）加上 EBX 寄存器的值（即3），得到结果5，再将这个结果写入第一个运算子 EAX 寄存器。\r\n\r\n7.6 pop 指令\r\n\r\npop指令用于取出 Stack 最近一个写入的值（即最低位地址的值），并将这个值写入运算子指定的位置。\r\n\r\npop%ebx\r\n\r\n上面的代码表示，取出 Stack 最近写入的值（即 EBX 寄存器的原始值），再将这个值写回 EBX 寄存器（因为加法已经做完了，EBX 寄存器用不到了）。\r\n\r\n注意，pop指令还会将 ESP 寄存器里面的地址加4，即回收4个字节。\r\n\r\n7.7 ret 指令\r\n\r\nret指令用于终止当前函数的执行，将运行权交还给上层函数。也就是，当前函数的帧将被回收。\r\n\r\nret\r\n\r\n可以看到，该指令没有运算子。\r\n\r\n随着add_a_and_b函数终止执行，系统就回到刚才main函数中断的地方，继续往下执行。\r\n\r\nadd%esp,8\r\n\r\n上面的代码表示，将 ESP 寄存器里面的地址，手动加上8个字节，再写回 ESP 寄存器。这是因为 ESP 寄存器的是 Stack 的写入开始地址，前面的pop操作已经回收了4个字节，这里再回收8个字节，等于全部回收。\r\n\r\nret\r\n\r\n最后，main函数运行结束，ret指令退出程序执行。\r\n\r\n八、参考链接\r\n\r\nIntroduction to reverse engineering and Assembly, by Youness Alaoui\r\n\r\nx86 Assembly Guide, by University of Virginia Computer Science\r\n\r\n（完）', 64, '2019-12-18', 2, 4, 21);
INSERT INTO `tb_Article` VALUES (6, '图片测试嗷', '<p>\r\n	<img src=\"/uploads/kindeditor/2019/12/d410a16e-2176-11ea-82d2-acde48001122.jpg\" alt=\"\" /> python is what the best language in the world？\r\n</p>', 7, '2019-12-18', 4, 4, 21);
INSERT INTO `tb_Article` VALUES (7, '测试2', '<img src=\"/uploads/kindeditor/2019/12/fff1bd9a-218a-11ea-9c2e-acde48001122.jpg\" alt=\"\" />&nbsp; 月读！！！', 3, '2019-12-18', 3, 1, 21);
COMMIT;

-- ----------------------------
-- Table structure for tb_Category
-- ----------------------------
DROP TABLE IF EXISTS `tb_Category`;
CREATE TABLE `tb_Category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_Category
-- ----------------------------
BEGIN;
INSERT INTO `tb_Category` VALUES (1, '前端技术');
INSERT INTO `tb_Category` VALUES (2, '后端程序');
INSERT INTO `tb_Category` VALUES (3, '授人以渔');
INSERT INTO `tb_Category` VALUES (4, '程序人生');
COMMIT;

-- ----------------------------
-- Table structure for tb_Comments
-- ----------------------------
DROP TABLE IF EXISTS `tb_Comments`;
CREATE TABLE `tb_Comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` longtext NOT NULL,
  `comment_article_id` int(11) NOT NULL,
  `comment_user_id` int(11) NOT NULL,
  `date` date NOT NULL,
  PRIMARY KEY (`id`),
  KEY `tb_Comments_comment_article_id_6738b2d5_fk_tb_Article_id` (`comment_article_id`),
  KEY `tb_Comments_comment_user_id_2c786131_fk_tb_users_id` (`comment_user_id`),
  CONSTRAINT `tb_Comments_comment_article_id_6738b2d5_fk_tb_Article_id` FOREIGN KEY (`comment_article_id`) REFERENCES `tb_article` (`id`),
  CONSTRAINT `tb_Comments_comment_user_id_2c786131_fk_tb_users_id` FOREIGN KEY (`comment_user_id`) REFERENCES `tb_users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_Comments
-- ----------------------------
BEGIN;
INSERT INTO `tb_Comments` VALUES (1, 'good', 2, 21, '2019-12-17');
INSERT INTO `tb_Comments` VALUES (2, 'enenen', 2, 21, '2019-12-17');
INSERT INTO `tb_Comments` VALUES (3, 'enenen', 2, 21, '2019-12-19');
INSERT INTO `tb_Comments` VALUES (4, 'enenen', 2, 21, '2019-12-18');
INSERT INTO `tb_Comments` VALUES (5, '我哭了，终于可以显示了', 2, 21, '2019-12-16');
INSERT INTO `tb_Comments` VALUES (6, 'CCCCCC', 3, 21, '2019-12-16');
INSERT INTO `tb_Comments` VALUES (7, '前排！！！', 1, 19, '2019-12-19');
INSERT INTO `tb_Comments` VALUES (8, '可以', 4, 21, '2019-12-19');
INSERT INTO `tb_Comments` VALUES (9, '两', 1, 21, '2019-12-19');
INSERT INTO `tb_Comments` VALUES (12, 'hhh', 4, 19, '2019-12-21');
INSERT INTO `tb_Comments` VALUES (13, '行吧\r\n', 6, 21, '2019-12-22');
COMMIT;

-- ----------------------------
-- Table structure for tb_EverydaySentence
-- ----------------------------
DROP TABLE IF EXISTS `tb_EverydaySentence`;
CREATE TABLE `tb_EverydaySentence` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL,
  `content` longtext NOT NULL,
  `content2` longtext NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_EverydaySentence
-- ----------------------------
BEGIN;
INSERT INTO `tb_EverydaySentence` VALUES (1, '2019-12-23', 'Do not let what you cannot do interfere with what you can do.', '别让你不能做的事妨碍到你能做的事。（John Wooden）');
COMMIT;

-- ----------------------------
-- Table structure for tb_IP
-- ----------------------------
DROP TABLE IF EXISTS `tb_IP`;
CREATE TABLE `tb_IP` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `ip_article_id` int(11) NOT NULL,
  `time` double NOT NULL,
  PRIMARY KEY (`id`),
  KEY `tb_IP_ip_article_id_c9ea8d1f_fk_tb_Article_id` (`ip_article_id`),
  CONSTRAINT `tb_IP_ip_article_id_c9ea8d1f_fk_tb_Article_id` FOREIGN KEY (`ip_article_id`) REFERENCES `tb_article` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=88 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_IP
-- ----------------------------
BEGIN;
INSERT INTO `tb_IP` VALUES (83, '127.0.0.1', 4, 1577029687.71064);
INSERT INTO `tb_IP` VALUES (84, '127.0.0.1', 6, 1577030026.71609);
INSERT INTO `tb_IP` VALUES (85, '127.0.0.1', 7, 1577030077.04411);
INSERT INTO `tb_IP` VALUES (86, '127.0.0.1', 3, 1577066350.86584);
COMMIT;

-- ----------------------------
-- Table structure for tb_links
-- ----------------------------
DROP TABLE IF EXISTS `tb_links`;
CREATE TABLE `tb_links` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `link` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_links
-- ----------------------------
BEGIN;
INSERT INTO `tb_links` VALUES (1, 'www.baidu.com');
COMMIT;

-- ----------------------------
-- Table structure for tb_Notification
-- ----------------------------
DROP TABLE IF EXISTS `tb_Notification`;
CREATE TABLE `tb_Notification` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` longtext NOT NULL,
  `date` datetime(6),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_Notification
-- ----------------------------
BEGIN;
INSERT INTO `tb_Notification` VALUES (1, 'Welcome to my personal_blog!!!', '2019-12-12 00:00:00.000000');
INSERT INTO `tb_Notification` VALUES (2, 'life is short i use python!!', '2019-12-12 00:00:00.000000');
INSERT INTO `tb_Notification` VALUES (3, 'look here', '2019-12-12 00:00:00.000000');
INSERT INTO `tb_Notification` VALUES (4, 'what the hell', '2019-12-12 00:00:00.000000');
INSERT INTO `tb_Notification` VALUES (5, 'this is tool is only show five column', '2019-12-12 00:00:00.000000');
INSERT INTO `tb_Notification` VALUES (6, '123', '2019-12-12 00:00:00.000000');
COMMIT;

-- ----------------------------
-- Table structure for tb_Tags
-- ----------------------------
DROP TABLE IF EXISTS `tb_Tags`;
CREATE TABLE `tb_Tags` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_Tags
-- ----------------------------
BEGIN;
INSERT INTO `tb_Tags` VALUES (1, 'PHP');
INSERT INTO `tb_Tags` VALUES (2, 'PYTHON');
INSERT INTO `tb_Tags` VALUES (3, 'MYSQL');
INSERT INTO `tb_Tags` VALUES (4, 'C/C++');
COMMIT;

-- ----------------------------
-- Table structure for tb_Today
-- ----------------------------
DROP TABLE IF EXISTS `tb_Today`;
CREATE TABLE `tb_Today` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) NOT NULL,
  `content` longtext NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_Today
-- ----------------------------
BEGIN;
INSERT INTO `tb_Today` VALUES (1, '从下载看我们该如何做事', '一次我下载几部电影，发现如果同时下载多部要等上几个小时，然后我把最想看的做个先后排序，去设置同时只能下载一部，结果是不到一杯茶功夫我就能看到最想看的电影。 这就像我们一段时间内想干成很多事情，是同时干还是有选择有顺序的干，结果很不一样。同时...');
COMMIT;

-- ----------------------------
-- Table structure for tb_users
-- ----------------------------
DROP TABLE IF EXISTS `tb_users`;
CREATE TABLE `tb_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `password` varchar(128) NOT NULL,
  `last_login` datetime(6) DEFAULT NULL,
  `is_superuser` tinyint(1) NOT NULL,
  `username` varchar(150) NOT NULL,
  `first_name` varchar(30) NOT NULL,
  `last_name` varchar(30) NOT NULL,
  `email` varchar(254) NOT NULL,
  `is_staff` tinyint(1) NOT NULL,
  `is_active` tinyint(1) NOT NULL,
  `date_joined` datetime(6) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_users
-- ----------------------------
BEGIN;
INSERT INTO `tb_users` VALUES (1, 'pbkdf2_sha256$36000$Yu381xTAg4Qg$ur9GGCOJtAzRV3k8ww78K5ZdU7f4zCrSgHqZu145P54=', '2019-12-16 08:02:25.121866', 0, 'liangdinguan', '', '', '', 0, 1, '2019-12-15 10:43:41.303814');
INSERT INTO `tb_users` VALUES (4, 'pbkdf2_sha256$36000$HgAEKvYwGJZq$t87d9lw5sueotRoSHLapPlcabU4q5Za4LeGqE4PVZtQ=', '2019-12-16 06:30:54.941386', 0, 'liangdinguan2', '', '', '', 0, 1, '2019-12-15 11:56:06.612908');
INSERT INTO `tb_users` VALUES (5, 'pbkdf2_sha256$36000$pQ4oGaAbZ3fl$Sx6ae8zWbqPZ+ITogIOEmLkV83mD0YTpw8hpZC0g98k=', '2019-12-15 12:00:43.489401', 0, '2280426623@qq.com', '', '', '', 0, 1, '2019-12-15 12:00:43.357646');
INSERT INTO `tb_users` VALUES (6, 'pbkdf2_sha256$36000$4V0hz2oImK2R$pTVapRV/jeXiO9Clu5D+Z07Cw5K5AUsATnweSp3A8Zs=', '2019-12-15 12:01:42.951162', 0, 'liangdinguan3', '', '', '', 0, 1, '2019-12-15 12:01:42.836516');
INSERT INTO `tb_users` VALUES (7, 'pbkdf2_sha256$36000$RqEySBKqUCjU$VW8DlXBkm1EKh+2ShiN4H7jhheVn0p0qVWiE65JTagM=', '2019-12-15 12:33:42.228188', 0, 'liang4', '', '', '', 0, 1, '2019-12-15 12:33:42.096891');
INSERT INTO `tb_users` VALUES (8, 'pbkdf2_sha256$36000$xCRNDhxnO5z3$h7tapKmnzrecTUYoMaRCZdb9QgN6eYkQ4AjOWEO1n+s=', '2019-12-15 12:35:51.992867', 0, 'liang5', '', '', '', 0, 1, '2019-12-15 12:35:51.917028');
INSERT INTO `tb_users` VALUES (9, 'pbkdf2_sha256$36000$yVZFvsc2BuZe$9ZVEpzl4l/wGDr6JmiKy6wxEWTbdrQjiR0rh5VHns9M=', '2019-12-15 12:46:04.379448', 0, 'liang6', '', '', '', 0, 1, '2019-12-15 12:46:04.247054');
INSERT INTO `tb_users` VALUES (10, 'pbkdf2_sha256$36000$MM9KjQD41wjz$7iItP2HAyknpYVl263qVKWucn7XLpTi8ZTwYxFrK278=', '2019-12-16 01:01:33.443697', 0, 'liang7', '', '', '', 0, 1, '2019-12-16 01:01:33.269209');
INSERT INTO `tb_users` VALUES (11, 'pbkdf2_sha256$36000$aLl9vlnNST63$5RIcqeyjZP6KE232xvOIVFJzUsGl0iSq8l9SHE/Krdg=', '2019-12-16 02:30:23.880100', 0, 'liang8', '', '', '', 0, 1, '2019-12-16 02:30:23.657054');
INSERT INTO `tb_users` VALUES (12, 'pbkdf2_sha256$36000$qssF1wKEUOn7$hbeHNVOwQ/b/zjRhy8hNJeuBbF04tn2T6SsXNrmA534=', '2019-12-16 02:31:14.802113', 0, 'liang9', '', '', '', 0, 1, '2019-12-16 02:31:14.669044');
INSERT INTO `tb_users` VALUES (13, 'pbkdf2_sha256$36000$xH7mTsznqFm5$oRGQdR4YkMWf1gL7Cz1FUTwIj44hbRpGiAGaQL+aUfY=', '2019-12-16 03:03:56.763349', 0, 'liang0', '', '', '', 0, 1, '2019-12-16 03:03:56.607631');
INSERT INTO `tb_users` VALUES (14, 'pbkdf2_sha256$36000$npvAqd2zLI16$ch5adAmcyLb9NbWgWgKW3Bblit2J0xw2hQNHqT3xeLE=', '2019-12-16 03:05:02.035800', 0, 'liang1', '', '', '', 0, 1, '2019-12-16 03:05:01.958958');
INSERT INTO `tb_users` VALUES (15, 'pbkdf2_sha256$36000$yiSxMsNFdtRi$iAiI2wzExQW435bzeZz7cjT1pxseXirOPPM7n7Ofiuc=', '2019-12-16 03:14:27.152618', 0, 'liang12', '', '', '', 0, 1, '2019-12-16 03:14:26.989978');
INSERT INTO `tb_users` VALUES (16, 'pbkdf2_sha256$36000$KejLrBgd2IUM$UhneBmK95eo7CK0vQ+Vwni9nbR9XPXGzJSv+br1hu4M=', '2019-12-16 03:21:48.776682', 0, 'liang13', '', '', '', 0, 1, '2019-12-16 03:21:48.618350');
INSERT INTO `tb_users` VALUES (18, 'pbkdf2_sha256$36000$mbhGFjmUDiWP$3/U8YVdi5QSB5vfp7tomG2B3cmVjFttRhPkEV+ryyow=', '2019-12-16 03:28:16.288259', 0, 'liang14', '', '', '', 0, 1, '2019-12-16 03:28:16.189064');
INSERT INTO `tb_users` VALUES (19, 'pbkdf2_sha256$36000$cZU8lsOld59F$xKJ1u4UFF1nMOzG6JDRa0AqA1fm1ra06RYHGhBeNFAY=', '2019-12-21 15:32:48.468914', 0, 'liang2', '', '', '', 0, 1, '2019-12-16 06:48:43.493459');
INSERT INTO `tb_users` VALUES (20, 'pbkdf2_sha256$36000$p5RbWn4XsZoc$SUdMfFad5SlfceAYXQKp3mrbmbAvYHCMEetEP420uOg=', '2019-12-21 15:34:21.409921', 0, 'liang33', '', '', '', 0, 1, '2019-12-16 06:55:48.686313');
INSERT INTO `tb_users` VALUES (21, 'pbkdf2_sha256$36000$vCwqSr1dgg5o$s9V+quQ509Hf3t1DxloxYaIoLKd9Wb919a+fOeHK5qg=', '2019-12-21 17:41:30.299741', 0, 'liang001', '', '', '', 0, 1, '2019-12-16 08:10:23.088025');
INSERT INTO `tb_users` VALUES (22, 'pbkdf2_sha256$36000$aggoEoLyb4pW$FfF2sX51A9uVRVMfX4OyMGQQCiSNXmc8qbhbgXHy+sw=', '2019-12-16 08:27:33.660432', 0, '梁鼎冠', '', '', '', 0, 1, '2019-12-16 08:11:09.919580');
INSERT INTO `tb_users` VALUES (23, 'pbkdf2_sha256$36000$4wDLisAuxSS7$/mZFLKygaFxX4mYECP7rOdkNauasKt/iSa3yhFJKoO8=', '2019-12-16 08:28:41.440664', 0, '梁鼎冠2', '', '', '', 0, 1, '2019-12-16 08:28:41.329182');
INSERT INTO `tb_users` VALUES (24, 'pbkdf2_sha256$36000$4OgMQ7774Je7$zirrknCybbGlhfDWCD8RfYTilPNLZ+89puul5R0rhuo=', '2019-12-17 02:37:57.843083', 1, 'liang999', '', '', '2280426623@qq.com', 1, 1, '2019-12-17 02:37:25.742211');
INSERT INTO `tb_users` VALUES (25, 'pbkdf2_sha256$36000$pnqWc4gbTPpQ$QI0I2jQ5HucMe65zzHwkoEzKeEQGGJBVMb9F03yZI48=', '2019-12-22 13:36:39.504110', 0, 'haha', '', '', '', 0, 1, '2019-12-22 13:36:39.431747');
INSERT INTO `tb_users` VALUES (26, 'pbkdf2_sha256$36000$ovmf7hh74uDz$buS3m6/FdyFAA+sWaOGh8la2tnt68gIt2P/gQGS+1hQ=', NULL, 0, 'uuuu', '', '', '', 0, 1, '2019-12-23 02:03:25.095884');
INSERT INTO `tb_users` VALUES (27, 'pbkdf2_sha256$36000$OG1iqJ4eFjU9$xW31/5oZrkByeSmv3fjOAu3oiE3L8AhWwFrdhJSKqgU=', '2019-12-23 03:37:53.639821', 0, 'uuuuu', '', '', '', 0, 1, '2019-12-23 03:37:53.585391');
COMMIT;

-- ----------------------------
-- Table structure for tb_users_groups
-- ----------------------------
DROP TABLE IF EXISTS `tb_users_groups`;
CREATE TABLE `tb_users_groups` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `users_id` int(11) NOT NULL,
  `group_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `tb_users_groups_users_id_group_id_f72338e4_uniq` (`users_id`,`group_id`),
  KEY `tb_users_groups_group_id_04d64563_fk_auth_group_id` (`group_id`),
  CONSTRAINT `tb_users_groups_group_id_04d64563_fk_auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`),
  CONSTRAINT `tb_users_groups_users_id_a3b1cffc_fk_tb_users_id` FOREIGN KEY (`users_id`) REFERENCES `tb_users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for tb_users_user_permissions
-- ----------------------------
DROP TABLE IF EXISTS `tb_users_user_permissions`;
CREATE TABLE `tb_users_user_permissions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `users_id` int(11) NOT NULL,
  `permission_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `tb_users_user_permissions_users_id_permission_id_47e54805_uniq` (`users_id`,`permission_id`),
  KEY `tb_users_user_permis_permission_id_b9b3ac94_fk_auth_perm` (`permission_id`),
  CONSTRAINT `tb_users_user_permis_permission_id_b9b3ac94_fk_auth_perm` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`),
  CONSTRAINT `tb_users_user_permissions_users_id_bb78954d_fk_tb_users_id` FOREIGN KEY (`users_id`) REFERENCES `tb_users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS = 1;
